import { injectable, inject } from 'inversify';
import {
    FrontendApplicationContribution,
    FrontendApplication,
} from '@theia/core/lib/browser';
import { MainMenuManager } from '../common/main-menu-manager';

@injectable()
export class EditorMode implements FrontendApplicationContribution {
    @inject(MainMenuManager)
    protected readonly mainMenuManager: MainMenuManager;

    protected app: FrontendApplication;

    onStart(app: FrontendApplication): void {
        this.app = app;
    }

    get compileForDebug(): boolean {
        const value = window.localStorage.getItem(
            EditorMode.COMPILE_FOR_DEBUG_KEY
        );
        return value === 'true';
    }

    async toggleCompileForDebug(): Promise<void> {
        const oldState = this.compileForDebug;
        const newState = !oldState;
        window.localStorage.setItem(
            EditorMode.COMPILE_FOR_DEBUG_KEY,
            String(newState)
        );
        this.mainMenuManager.update();
    }
}

export namespace EditorMode {
    export const COMPILE_FOR_DEBUG_KEY = 'arduino-compile-for-debug';
}
